

1.
    Синхронное : Выполнение кода блокируется до завершения операции (например, вызов функции и ожидание результата).
    Асинхронное : Код продолжает выполняться, пока операция обрабатывается в фоне (например, HTTP-запрос с callback/promise).
2.   

    Синхронная  (по умолчанию): Приложение ждет ответа от БД перед продолжением работы.
    Асинхронная : Возможна через специальные библиотеки (например, async в Go), но не является стандартной практикой.
     
3.  

    Что : Интерфейс для взаимодействия между системами (например, веб-сервисы).
    Для чего : Обмен данными между клиентом и сервером, интеграция сервисов.
     

4.  

    Что : Архитектурный стиль, основанный на HTTP-протоколе.
    Особенности : Stateless, использование стандартных методов (GET, POST), ресурсы как URI.
     
5. 

    Приложение, следующее принципам REST:
        Stateless-взаимодействие.
        Ресурсы идентифицируются через URI.
        Операции через HTTP-методы.
6.   

    Что : Сервер не хранит состояние клиента между запросами.
    Зачем : Упрощает масштабирование, повышает надежность (каждый запрос независим).

7.  

    Что : Временное хранение данных для ускорения доступа.
    Зачем : Снижает нагрузку на сервер, улучшает производительность.
     

8.   
    Клиент  (браузер, CDN) и сервер  (кэш БД, Redis).
     
9. 
    GET : Чтение данных.
    POST : Создание ресурса.
    PUT : Полное обновление ресурса.
    DELETE : Удаление ресурса.
    PATCH : Частичное обновление.
     

10.  

    Query-параметры : ?id=1&sort=name.
    Тело запроса  (POST/PUT/PATCH): JSON, XML.
    Заголовки  (headers): API-ключи, тип контента.
     

11. 
    Содержит:
        Базовый путь (/api/v1/users).
        Идентификатор ресурса (/users/123).
        Query-параметры (?page=2).
         

12. 

    Content-Type : Тип данных (например, application/json).
    Cache-Control : Управление кэшированием.
    Status Code : Например, 200, 404, 500.
     

13.  
    200 OK : Успешный запрос (GET, PUT, DELETE).
    201 Created : Ресурс успешно создан (POST).
     
14.   

    POST : Создает ресурс, данные в теле запроса, не идемпотентен.
    GET : Получает данные, параметры в URL, идемпотентен.
     
15. 

    PUT : Заменяет ресурс целиком.
    PATCH : Частично обновляет ресурс.
     

16.  

    POST : Не идемпотентен (повторный запрос создаст новый ресурс).
    PUT : Идемпотентен (повторный запрос обновит существующий).
     

17.   

    Что : Повторный запрос дает тот же результат, что и первый.
    Важность : Гарантирует безопасность операций (например, PUT, DELETE).
     

18.   

    Повторное удаление не изменит результат (ресурс уже удален).
     

19.

    Использовать уникальный идентификатор (idempotency key) в заголовке. Сервер проверяет, не был ли запрос с таким ключом уже обработан.

20. 
    Можно , но это нарушает REST. GET предпочтительнее для чтения.

21. 
    Как обеспечить : Не удалять старые эндпоинты, добавлять новые версии.
    Новая версия API : При изменениях, которые ломают старые клиенты (например, удаление полей).
22. 
    Что : Описание структуры JSON-документа для валидации данных.
    Практика : Использовал для проверки входящих запросов в Node.js (библиотека ajv)
